package pattern10.eventcommission;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;

/**
 * Event的处理类
 * @author wdl
 */
public class EventHandler {
    private List<Event> events;

    public EventHandler(){
        events=new ArrayList<>();
    }

    /**
     * 添加对象和要执行的方法
     * @param object 执行的对象
     * @param methodName 执行的方法名
     * @param args 方法的参数
     */
    public void addEvent(Object object,String methodName,Object...args){
        events.add(new Event(object,methodName,args));
    }

    /**
     * 通知所有对象执行方法操作
     */
    public void notifyX() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
        for (Event event:events){
            event.invoke();
        }
    }
}
